Day 13: Transformers 라이브러리 시작하기
Hugging Face Transformers는 사전학습된 수천 개의 모델을 몇 줄의 코드로 사용할 수 있게 해주는 라이브러리입니다. 오늘은 설치부터 핵심 기능인 pipeline()까지 빠르게 살펴봅니다.
설치와 기본 설정
# 설치
# pip install transformers torch
from transformers import pipeline
# 감성 분석 파이프라인 생성
classifier = pipeline("sentiment-analysis")
result = classifier("이 영화 정말 재미있었어요!")
print(result)
# [{'label': 'POSITIVE', 'score': 0.9998}]
# 여러 문장을 한번에 처리
texts = ["오늘 날씨가 좋다", "서비스가 너무 불친절해요"]
results = classifier(texts)
for text, res in zip(texts, results):
print(f"{text} -> {res['label']} ({res['score']:.4f})")
pipeline()으로 다양한 태스크 수행
pipeline() 함수 하나로 번역, 요약, 텍스트 생성 등 다양한 NLP 태스크를 수행할 수 있습니다. 내부적으로 모델과 토크나이저를 자동으로 다운로드합니다.
from transformers import pipeline
# 텍스트 요약
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
article = """
인공지능 기술이 빠르게 발전하면서 다양한 산업에 영향을 미치고 있다.
특히 대규모 언어 모델은 텍스트 생성, 번역, 코드 작성 등 여러 분야에서
인간 수준의 성능을 보여주고 있다. 기업들은 이러한 기술을 활용하여
업무 효율성을 높이고 새로운 서비스를 개발하고 있다.
"""
summary = summarizer(article, max_length=50, min_length=10)
print(summary[0]["summary_text"])
# 번역 (영어 -> 프랑스어)
translator = pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr")
print(translator("Hello, how are you today?"))
AutoModel과 AutoTokenizer로 세밀한 제어
pipeline()이 편리하지만, 모델과 토크나이저를 직접 로드하면 더 세밀하게 제어할 수 있습니다.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# GPU가 있으면 GPU로 이동
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
print(f"모델이 {device}에서 실행됩니다.")
# 토큰화 후 모델에 직접 입력
inputs = tokenizer("Transformers library is amazing!", return_tensors="pt").to(device)
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
predicted_class = torch.argmax(logits, dim=-1).item()
print(f"예측 클래스: {predicted_class}")
pipeline()은 빠른 프로토타이핑에, AutoModel/AutoTokenizer 조합은 커스텀 로직이 필요할 때 사용합니다. 두 가지 방법을 상황에 맞게 선택하세요.
오늘의 연습문제
pipeline("zero-shot-classification")을 사용하여 임의의 뉴스 기사 텍스트를 “정치”, “경제”, “스포츠”, “기술” 카테고리로 분류해보세요.pipeline("text-generation")으로 “인공지능의 미래는”이라는 프롬프트에 이어질 문장을 3개 생성해보세요.num_return_sequences파라미터를 활용합니다.AutoTokenizer로 한국어 문장 3개를 토큰화하고, 각 문장의 토큰 개수와 토큰 리스트를 출력해보세요. 모델은bert-base-multilingual-cased를 사용합니다.